Hyper Text Markup Language (HTML), including JavaScript and Cascading Style Sheets (CSS), has been one of most popular programming languages used not only to develop web sites but also to develop applications (so called Apps) for smart phones, tablets and other similar communication devices. While HTML as a language has many advantages, HTML also has some major weaknesses which prevent many software vendors from writing massive proprietary code in HTML.
Use of HTML Apps in mobile device computing (i.e. computing on mobile devices including e.g. smart phones and tablets) has been rapidly increasing in mobile web sites and packaged Apps and has become very popular. A HTML App is a software application that is constructed by HTML/JavaScript/CSS code and runs upon a Web Engine. A Web Runtime is software that manages and launches the HTML App.
However, it is very easy to get or extract the source code of a HTML App including HTML, JavaScript and CSS source code. It is easy to view, modify and debug a web site's source code with a web browser's built-in debug tool, and it is also possible to download publicly available tools for extracting the source code of a HTML App from its Android application package, i.e. a “.apk” file.
This is an obstacle for software vendors to implement their private valuable algorithms in HTML Apps, because proprietary software vendors need a solution to protect their source code from being reverse-engineered and/or protect their HTML Apps from being illegally copied.
One solution is to use code obfuscation tools to obfuscate the source code of HTML Apps before packaging the HTML Apps. Code obfuscation can significantly increase the difficulty of JavaScript code reverse-engineering and tampering. However, code obfuscation does not protect HTML programs from being copied since obfuscation does not affect the ability or difficulty of copying the source code and reusing the source code on a different computing device. Hence, it is easy for experienced hackers to reverse-engineer and re-engineer obfuscated source code. Furthermore, program developers must do the obfuscation when releasing the program and therefore debugging a release version of the software becomes very difficult because of the code obfuscation.